1. Field of the Invention
The present invention relates to software modems, and more particularly to a software modem having a data pump with a plurality of self contained executable modules for updating and adding drivers to the software modem.
2. Description of the Related Art
Conventional modems accept digital data supplied by a computer system and convert it into modulated analog waves that are transmitted over a communication channel such as an analog telephone line. Modems also accept modulated analog waves via the communication channel and convert them into a digital form to pass on to the computer system.
Conventional modems using a telephone line communication channel send data at speeds commonly measured in bits per second, or bps. The most common modem speeds are 28,800 bps, 33,600 bps, and 56,000 bps. However, the actual speed of data moving across a telephone line varies and does not always equal the speed that the modem is capable of providing because the telephone line may operate with interference. Thus, to assure data integrity, data often travels across a telephone line communication channel at a lower speed than is available from the modem.
Modems have been classified according to various parameters such as potential modem speed, data compression techniques, and other communication protocols. Common classifications include V.34, for 33.6 kbps modems and V.90, for the 56 kbps modem standard.
A typical hardware modem operating on a general purpose computer includes a controller, a digital signal processor (DSP), a codec (coder/decoder), and a data access arrangement (DAA). External hardware modems typically include a universal asynchronous receiver-transmitter (UART) while internal hardware modems replace the UART with a hardware driver.
As processing power in general purpose computers has increased through development of higher powered microprocessors, modem designers have realized that the computer""s processor can be used to handle some modem operations. Thus, some functionality performed by conventional hardware modems has begun to be implemented in software. As time goes one, more and more functionality of hardware modems is being realized in software. However, each time that new functionality is converted to software, the new software functionality is added to a single software object. Thus, if one part of the functionality is found to be operating improperly, the whole software object must be replaced.
The DSP of a software modem, by nature, performs many different signal processing tasks, e.g., data modulations, fax modulations, etc. In addition, the data pump performs general telephony tasks such as pulse or tone dialing. These tasks are implemented in a single software object and, in operation, consume a large amount of a computer""s memory. Further, if the software modem is to be updated or changed, the whole object must be replaced. A hardware change in one area of the modem also requires total object replacement even though only a small portion of the object is affected.
Various aspects of the present invention can be found in a communication system comprising application software, communication software that interacts with the application software, and communication hardware that interacts with the communication software. The communication software includes at least one controller and a plurality of objects with the communication software operating as an interface between the application software and the communication hardware. Thus, the application software communicates with the communication hardware. The controller enables the application software to activate one or more individual ones of the plurality of objects to provide communication between the communication system and a communication channel.
The objects of the communication system often comprise driver modules having individual modem functionality. The at least one controller of the communication system enables the communication software to operate using a single one of the plurality of objects during operation of the communication system. The plurality of objects are individually modifiable and individually replaceable without regard to other ones of the plurality of objects and the plurality of objects are often selected from the group consisting of drivers, data link libraries, and threads.
Various other aspects of the present invention are realized in a method for operating a software modem on a computer system having a memory. The method comprises creating a plurality of software modules that interact with one another to perform software modem tasks on the computer system, scheduling the plurality of software modem tasks according to specific operations of the software modem, loading individual software modules into the memory of the computer system on an as needed basis as the software modem operates on the computer system, and unloading individual software modules from the memory of the computer system when the individual software module is no longer required for operation of the software modem on the computer system.
The method may also comprise modifying individual software modules from the plurality of software modules with the modifications occurring independently of software modules in the plurality of software modules that remain unmodified. Modifying individual software modules may comprise debugging, upgrading, or isolating the individual software modules, in some cases, to perform diagnostics on the software modem independent of the remaining software modules of the software modem.
Further, a software modem according to principles of the present invention may include communication software and a modem card. The communication software often includes a controller and a plurality of modules, the plurality of modules being independent from one another and operating according to instructions received from the controller such that only modules specified by the instructions are executed in the software modem. The modem card often includes another controller, additional modules, and communication hardware. The another controller controls which of the additional modules to activate for interaction with the communication hardware.
The plurality of modules of the software modem are often modifiable independently of one another and the controller. In fact, modules may be added to the plurality of modules already existing in the communication software of the software modem. In addition, the additional modules of the modem card are modifiable independently from one another and the controller of the modem card. Similar to the modules of the communication software, the modules of the modem card may be added to the additional modules already existing in the modem card of the software modem.
Other aspects of the present invention can be found in a software modem including a plurality of self-contained executable entities. The executable entities include at least a controller and a data pump with the controller operating as an interface between an operating system driver and the data pump when signals are passed from the operating system driver to the data pump. The data pump includes at least a scheduler and a hardware driver, the scheduler interacting with additional self-contained executable entities and enabling the data pump to operate using one or more individual ones of the additional self-contained executable entities according to the signals passed from the controller to the data pump.
The self-contained executable entities of the software modem according to the present invention often comprise driver modules having individual modem functionality. The scheduler enables the data pump to operate using a single one of the additional self-contained executable entities during operation of the software modem. The additional self-contained executable entities are individually modifiable and individually replaceable without regard to other ones of the additional self-contained executable entities. The additional self-contained executable entities are commonly selected from the group consisting of drivers, data link logic, and threads.
Still other aspects of the present invention can be found in a software modem that includes a controller and a data pump. The data pump may include an abstraction layer, a scheduler, a sampler, a hardware driver, and a plurality of modules. The plurality of modules are independent from one another and operate according to instructions received from the scheduler such that only modules specified by the instructions are executed in the software modem. Advantageously, the modules of the software modem are modifiable independently of one another and the controller. The modifiable modules comprise modules which enable adding additional modules to the plurality of modules already existing in the data pump of the software modem.
Other aspects of the present invention will become apparent with further reference to the drawings and specification.